package cn.com.blueInfo.bpm.system.response;

import cn.com.blueInfo.bpm.common.response.BaseVO;
import com.alibaba.fastjson.JSONObject;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
* 动态表单字段表 前端视图
* @author suxch
* @since 2025-08-24 01:37:55
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "动态表单字段 前端视图")
public class DynamicFormFieldVO extends BaseVO {

    /** ID */
    @Schema(description = "ID")
    private String id;
    /** 动态表单ID */
    @Schema(description = "动态表单ID")
    private String formId;
    /** 字段名（数据库字段名） */
    @Schema(description = "字段名（数据库字段名）")
    private String fieldName;
    /** 字段标签（前端展示用） */
    @Schema(description = "字段标签（前端展示用）")
    private String fieldLabel;
    /** 字段类型（数据库） */
    @Schema(description = "字段类型（数据库）")
    private String fieldType;
    /** 关联字典ID */
    @Schema(description = "关联字典ID")
    private String fieldDictId;
    /** 是否必填：1-是，0-否 */
    @Schema(description = "是否必填：1-是，0-否")
    private String required;
    /** 默认值 */
    @Schema(description = "默认值")
    private String defaultValue;
    /** 最大长度 */
    @Schema(description = "最大长度")
    private Integer maxLength;
    /** 可查看该字段的角色ID列表 */
    @Schema(description = "可查看该字段的角色ID列表")
    private String viewRoleIds;
    /** 可编辑该字段的角色ID列表 */
    @Schema(description = "可编辑该字段的角色ID列表")
    private String editRoleIds;
    /** 是否默认隐藏：1-是，0-否 */
    @Schema(description = "是否默认隐藏：1-是，0-否")
    private String hidden;
    /** 抽象组件类型（text-input/select/date-picker等，映射到Element Plus组件） */
    @Schema(description = "抽象组件类型（text-input/select/date-picker等，映射到Element Plus组件）")
    private String componentType;
    /** 通用组件属性（与框架无关，如placeholder/maxLength） */
    @Schema(description = "通用组件属性（与框架无关，如placeholder/maxLength）")
    private JSONObject componentProps;
    /** Element Plus专属属性（如el-input的clearable、el-select的multiple） */
    @Schema(description = "Element Plus专属属性（如el-input的clearable、el-select的multiple）")
    private JSONObject frameProps;
    /** 验证规则（适配Element Plus表单验证，如{required:true,message:"必填"}） */
    @Schema(description = "验证规则（适配Element Plus表单验证，如{required:true,message:\"必填\"}）")
    private JSONObject validationRules;
    /** 依赖字段（控制显隐/禁用，格式："字段名=值1,值2;字段名!=值3"） */
    @Schema(description = "依赖字段（控制显隐/禁用，格式：\"字段名=值1,值2;字段名!=值3\"）")
    private String dependentFields;
    /** 字段宽度（像素，适配Element Plus组件width属性） */
    @Schema(description = "字段宽度（像素，适配Element Plus组件width属性）")
    private Integer width;
    /** 对齐方式（left/center/right，适配Element Plus align属性） */
    @Schema(description = "对齐方式（left/center/right，适配Element Plus align属性）")
    private String align;
    /** 帮助文本（适配Element Plus form-item的tooltip） */
    @Schema(description = "帮助文本（适配Element Plus form-item的tooltip）")
    private String helpText;
    /** 是否支持搜索：1-是，0-否（用于Element Plus表格筛选） */
    @Schema(description = "是否支持搜索：1-是，0-否（用于Element Plus表格筛选）")
    private String searchable;
    /** 是否在列表中显示：1-是，0-否（用于Element Plus表格动态列） */
    @Schema(description = "是否在列表中显示：1-是，0-否（用于Element Plus表格动态列）")
    private String listShow;
    /** 自定义插槽名称（用于Element Plus复杂组件，如上传/操作按钮） */
    @Schema(description = "自定义插槽名称（用于Element Plus复杂组件，如上传/操作按钮）")
    private String slotName;

}